package com.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.dao.DataAccessException;

import com.model.ProductoCodigo;
import com.model.Proveedor;
import com.query.ProductoCodigoQuery;

public class ProductoCodigoDAOImpl extends BaseHibernateDAO<ProductoCodigo, ProductoCodigoQuery>{

	@Override
	public Class<ProductoCodigo> getModelClass() {
		return ProductoCodigo.class;
	}


	@Override
	public List<String> getListNames() {
		List<String> list = new ArrayList<String>();
		return list;
	}
	
	@Override
	public ProductoCodigo findBy(Long idProducto) throws DataAccessException {
		DetachedCriteria criteria = DetachedCriteria.forClass(ProductoCodigo.class);
		criteria.add(Restrictions.eq("producto.id", idProducto));
		ProductoCodigo object = (ProductoCodigo) getHibernateTemplate().findByCriteria(criteria).get(0);
		return object;
	}

	
	@Override
	public ProductoCodigo findByCodigo(Long codigoProveedor) throws DataAccessException {
		DetachedCriteria criteria = DetachedCriteria.forClass(ProductoCodigo.class);
		criteria.add(Restrictions.eq("codigoProveedor", Long.toString(codigoProveedor)));
		ProductoCodigo object = (ProductoCodigo) getHibernateTemplate().findByCriteria(criteria).get(0);
		return object;
	}


	public ProductoCodigo buscarPor(Long idProducto, Long idProveedor) throws DataAccessException {
		DetachedCriteria criteria = DetachedCriteria.forClass(ProductoCodigo.class);
		criteria.add(Restrictions.eq("codigoProveedor", Long.toString(idProducto) ));
		criteria.add(Restrictions.eq("proveedor.id", idProveedor));
		ProductoCodigo productoCodigo = (ProductoCodigo) getHibernateTemplate().findByCriteria(criteria).get(0);
		return productoCodigo;
	}

	public ProductoCodigo findBy(Long idProducto, Long idProveedor) throws DataAccessException {
		DetachedCriteria criteria = DetachedCriteria.forClass(ProductoCodigo.class);
		criteria.add(Restrictions.eq("producto.id", idProducto) );
		criteria.add(Restrictions.eq("proveedor.id", idProveedor));
		ProductoCodigo productoCodigo = (ProductoCodigo) getHibernateTemplate().findByCriteria(criteria).get(0);
		return productoCodigo;
	}

}
